package projecto.pkgfinal;

import java.util.ArrayList;
import java.io.Serializable;

public abstract class Pessoa implements Serializable {
    private String nomeProprio;
    private int id;
    private int perfil;
    private String apelido;
    private char genero;
    private ArrayList<Telefone> telefones;
    private ArrayList<Morada> moradas;
    private String bi;
    private String nif;
    private String nss;
    static String[] TIPOMEDICO = {"1","Médico"};
    static String[] TIPOADMINISTRATIVO = {"2","Administrativo"};
    static String[] TIPOUTENTE = {"3","Utente"};

    public Pessoa(String nomeProprio, int id, int perfil, String apelido, char genero, ArrayList<Telefone> telefones, ArrayList<Morada> moradas, String bi, String nif, String nss) {
        this.nomeProprio = nomeProprio;
        this.id = id;
        this.perfil = perfil;
        this.apelido = apelido;
        this.genero = genero;
        this.telefones = telefones;
        this.moradas = moradas;
        this.bi = bi;
        this.nif = nif;
        this.nss = nss;
    }

    public void setBi(String bi) {
        this.bi = bi;
    }

    public void setNif(String nif) {
        this.nif = nif;
    }

    public void setNss(String nss) {
        this.nss = nss;
    }

    public String getBi() {
        return bi;
    }

    public String getNif() {
        return nif;
    }

    public String getNss() {
        return nss;
    }

    public void setMoradas(ArrayList<Morada> moradas) {
        this.moradas = moradas;
    }
    
    public ArrayList<Morada> getMoradas() {
        return moradas;
    }
    
    public void setTelefones(ArrayList<Telefone> telefones) {
        this.telefones = telefones;
    }

    public void setApelido(String Apelido) {
        this.apelido = Apelido;
    }

    public void setGenero(char genero) {
        this.genero = genero;
    }

    public void setId(int id) {
        this.id = id;
    }

    public void setNomeProprio(String nomeProprio) {
        this.nomeProprio = nomeProprio;
    }

    public void setPerfil(int perfil) {
        this.perfil = perfil;
    }

    public String getApelido() {
        return apelido;
    }

    public char getGenero() {
        return genero;
    }

    public int getId() {
        return id;
    }

    public String getNomeProprio() {
        return nomeProprio;
    }

    public int getPerfil() {
        return perfil;
    }

    public ArrayList<Telefone> getTelefones() {
        return telefones;
    } 
    
    @Override
    public String toString(){
        StringBuilder b = new StringBuilder();
        b.append("ID:"+getId()+"\n");
        b.append("=== Dados Pessoais ===\n");
        b.append("Género:"+getGenero()+"\n");
        b.append("Nome:"+getNomeProprio()+"\n");
        b.append("Apelido:"+getApelido()+"\n");
        b.append("BI:"+getBi()+"\n");
        b.append("NIF:"+getNif()+"\n");
        b.append("NSS:"+getNss()+"\n\n");
        b.append("=== Moradas ===\n");
        b.append("Moradas:");
            for(int i=0;i<getMoradas().size();i++ ){
                b.append(getMoradas().get(i).toString());
            }
        b.append("\n\n");
        b.append("=== Contactos ===\n");
        b.append("Telefones:");
            for(int i=0;i<getTelefones().size();i++ ){
                b.append(getTelefones().get(i).toString());
            }
        b.append("\n\n");
        return b.toString();
    }
    
}
